`timescale 1ns / 1ps

module init_perdio(filas_i,columnas_i,perdio_o,perdio_rgb_o);

	//ENTRADAS
	input [9:0]filas_i;
	input [9:0]columnas_i;
	
	//SALIDAS
	output perdio_o;
	output [7:0]perdio_rgb_o;

	//PARAMETROS LOCALES
	//LETRA P
	localparam P1_limite_super = 50;
	localparam P1_limite_inf = 70;
	localparam P1_limite_izq = 60;
	localparam P1_limite_der = 160;
	
	localparam P2_limite_super = 70;
	localparam P2_limite_inf = 190;
	localparam P2_limite_izq = 60;
	localparam P2_limite_der = 80;
	
	localparam P3_limite_super = 120;
	localparam P3_limite_inf = 140;
	localparam P3_limite_izq = 80;
	localparam P3_limite_der = 160;
	
	localparam P4_limite_super = 70;
	localparam P4_limite_inf = 120;
	localparam P4_limite_izq = 140;
	localparam P4_limite_der = 160;
	
	//LETRA O
	localparam O1_limite_super = 50;
	localparam O1_limite_inf = 70;
	localparam O1_limite_izq = 190;
	localparam O1_limite_der = 290;
	
	localparam O2_limite_super = 70;
	localparam O2_limite_inf = 170;
	localparam O2_limite_izq = 190;
	localparam O2_limite_der = 210;
	
	localparam O3_limite_super = 170;
	localparam O3_limite_inf = 190;
	localparam O3_limite_izq = 190;
	localparam O3_limite_der = 290;
	
	localparam O4_limite_super = 70;
	localparam O4_limite_inf = 170;
	localparam O4_limite_izq = 270;
	localparam O4_limite_der = 290;

	//LETRA N
	localparam N1_limite_super = 50;
	localparam N1_limite_inf = 190;
	localparam N1_limite_izq = 320;
	localparam N1_limite_der = 340;
	
	localparam N2_limite_super = 55;
	localparam N2_limite_inf = 85;
	localparam N2_limite_izq = 340;
	localparam N2_limite_der = 360;
	
	localparam N3_limite_super = 85;
	localparam N3_limite_inf = 155;
	localparam N3_limite_izq = 360;
	localparam N3_limite_der = 380;
	
	localparam N4_limite_super = 155;
	localparam N4_limite_inf = 185;
	localparam N4_limite_izq = 380;
	localparam N4_limite_der = 400;
	
	localparam N5_limite_super = 50;
	localparam N5_limite_inf = 190;
	localparam N5_limite_izq = 400;
	localparam N5_limite_der = 420;
	
	//LETRA G
	localparam G1_limite_super = 50;
	localparam G1_limite_inf = 70;
	localparam G1_limite_izq = 450;
	localparam G1_limite_der = 550;
	
	localparam G2_limite_super = 70;
	localparam G2_limite_inf = 170;
	localparam G2_limite_izq = 450;
	localparam G2_limite_der = 470;
	
	localparam G3_limite_super = 170;
	localparam G3_limite_inf = 190;
	localparam G3_limite_izq = 450;
	localparam G3_limite_der = 550;
	
	localparam G4_limite_super = 120;
	localparam G4_limite_inf = 170;
	localparam G4_limite_izq = 530;
	localparam G4_limite_der = 550;
	
	localparam G5_limite_super = 120;
	localparam G5_limite_inf = 140;
	localparam G5_limite_izq = 510;
	localparam G5_limite_der = 530;
	
	//TRISTE
	localparam TRIS1_limite_super = 250;
	localparam TRIS1_limite_inf = 330;
	localparam TRIS1_limite_izq = 280;
	localparam TRIS1_limite_der = 300;
	
	localparam TRIS2_limite_super = 250;
	localparam TRIS2_limite_inf = 330;
	localparam TRIS2_limite_izq = 350;
	localparam TRIS2_limite_der = 370;
	
	localparam TRIS3_limite_super = 410;
	localparam TRIS3_limite_inf = 430;
	localparam TRIS3_limite_izq = 260;
	localparam TRIS3_limite_der = 280;
	
	localparam TRIS4_limite_super = 390;
	localparam TRIS4_limite_inf = 410;
	localparam TRIS4_limite_izq = 280;
	localparam TRIS4_limite_der = 310;
	
	localparam TRIS5_limite_super = 370;
	localparam TRIS5_limite_inf = 390;
	localparam TRIS5_limite_izq = 310;
	localparam TRIS5_limite_der = 340;
	
	localparam TRIS6_limite_super = 390;
	localparam TRIS6_limite_inf = 410;
	localparam TRIS6_limite_izq = 340;
	localparam TRIS6_limite_der = 370;
	
	localparam TRIS7_limite_super = 410;
	localparam TRIS7_limite_inf = 430;
	localparam TRIS7_limite_izq = 370;
	localparam TRIS7_limite_der = 390;

	//ASIGNACIÓN SECUENCIAL DE LA LETRA A DIBUJAR SEGÚN SEA EL VALOR DE LA FILA Y LA COLUMNA
	assign letra_p = ((columnas_i >= P1_limite_super) && (columnas_i <= P1_limite_inf) && (filas_i >= P1_limite_izq) && (filas_i <= P1_limite_der))
							||	((columnas_i >= P2_limite_super) && (columnas_i <= P2_limite_inf) && (filas_i >= P2_limite_izq) && (filas_i <= P2_limite_der))
							||	((columnas_i >= P3_limite_super) && (columnas_i <= P3_limite_inf) && (filas_i >= P3_limite_izq) && (filas_i <= P3_limite_der))
							||	((columnas_i >= P4_limite_super) && (columnas_i <= P4_limite_inf) && (filas_i >= P4_limite_izq) && (filas_i <= P4_limite_der));
	
	assign letra_o = ((columnas_i >= O1_limite_super) && (columnas_i <= O1_limite_inf) && (filas_i >= O1_limite_izq) && (filas_i <= O1_limite_der))
							||	((columnas_i >= O2_limite_super) && (columnas_i <= O2_limite_inf) && (filas_i >= O2_limite_izq) && (filas_i <= O2_limite_der))
							||	((columnas_i >= O3_limite_super) && (columnas_i <= O3_limite_inf) && (filas_i >= O3_limite_izq) && (filas_i <= O3_limite_der))
							||	((columnas_i >= O4_limite_super) && (columnas_i <= O4_limite_inf) && (filas_i >= O4_limite_izq) && (filas_i <= O4_limite_der));
							
	assign letra_n = ((columnas_i >= N1_limite_super) && (columnas_i <= N1_limite_inf) && (filas_i >= N1_limite_izq) && (filas_i <= N1_limite_der))
							||	((columnas_i >= N2_limite_super) && (columnas_i <= N2_limite_inf) && (filas_i >= N2_limite_izq) && (filas_i <= N2_limite_der))
							||	((columnas_i >= N3_limite_super) && (columnas_i <= N3_limite_inf) && (filas_i >= N3_limite_izq) && (filas_i <= N3_limite_der))
							||	((columnas_i >= N4_limite_super) && (columnas_i <= N4_limite_inf) && (filas_i >= N4_limite_izq) && (filas_i <= N4_limite_der))
							||	((columnas_i >= N5_limite_super) && (columnas_i <= N5_limite_inf) && (filas_i >= N5_limite_izq) && (filas_i <= N5_limite_der));
							
	assign letra_g = ((columnas_i >= G1_limite_super) && (columnas_i <= G1_limite_inf) && (filas_i >= G1_limite_izq) && (filas_i <= G1_limite_der))
							||	((columnas_i >= G2_limite_super) && (columnas_i <= G2_limite_inf) && (filas_i >= G2_limite_izq) && (filas_i <= G2_limite_der))
							||	((columnas_i >= G3_limite_super) && (columnas_i <= G3_limite_inf) && (filas_i >= G3_limite_izq) && (filas_i <= G3_limite_der))
							||	((columnas_i >= G4_limite_super) && (columnas_i <= G4_limite_inf) && (filas_i >= G4_limite_izq) && (filas_i <= G4_limite_der))
							||	((columnas_i >= G5_limite_super) && (columnas_i <= G5_limite_inf) && (filas_i >= G5_limite_izq) && (filas_i <= G5_limite_der));
	
	assign triste = ((columnas_i >= TRIS1_limite_super) && (columnas_i <= TRIS1_limite_inf) && (filas_i >= TRIS1_limite_izq) && (filas_i <= TRIS1_limite_der))
							||	((columnas_i >= TRIS2_limite_super) && (columnas_i <= TRIS2_limite_inf) && (filas_i >= TRIS2_limite_izq) && (filas_i <= TRIS2_limite_der))
							||	((columnas_i >= TRIS3_limite_super) && (columnas_i <= TRIS3_limite_inf) && (filas_i >= TRIS3_limite_izq) && (filas_i <= TRIS3_limite_der))
							||	((columnas_i >= TRIS4_limite_super) && (columnas_i <= TRIS4_limite_inf) && (filas_i >= TRIS4_limite_izq) && (filas_i <= TRIS4_limite_der))
							||	((columnas_i >= TRIS5_limite_super) && (columnas_i <= TRIS5_limite_inf) && (filas_i >= TRIS5_limite_izq) && (filas_i <= TRIS5_limite_der))
							||	((columnas_i >= TRIS6_limite_super) && (columnas_i <= TRIS6_limite_inf) && (filas_i >= TRIS6_limite_izq) && (filas_i <= TRIS6_limite_der))
							||	((columnas_i >= TRIS7_limite_super) && (columnas_i <= TRIS7_limite_inf) && (filas_i >= TRIS7_limite_izq) && (filas_i <= TRIS7_limite_der));
							
	//SE DEFINE EL COLOR DEL QUE SE PINTARÁN LAS LETRAS
	assign perdio_rgb_o = 8'b00001111;
	
	//PINTA LA PANTALLA CON LA LETRA QUE SE ACABA DE ENCONTRAR, SEGÚN EL ANTERIOR BARRIDO
	assign perdio_o = letra_p || letra_o || letra_n || letra_g || triste;
	
endmodule
